#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

//int main()
//{
//	int len = strlen("abcdef");
//	printf("%d\n", len);
//
//	return 0;
//}


//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[] = "abcdefghi";
//	char arr2[] = "123";
//	printf("拷贝前：%s\n", arr1);
//
//	strcpy(arr1, arr2); // 字符串拷贝(目标空间，源字符串)
//
//	printf("拷贝后：%s\n", arr1);
//
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr1[30] = "hello";
//	char arr2[] = "world";
//
//	strcat(arr1, arr2);
//	printf("%s\n", arr1);
//
//	return 0;
//}
//
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//    char* p1 = "abcdef";
//    char* p2 = "aqwer";
//    int ret = strcmp(p1, p2); // p1和p2比
//    // a==a, 对比下一对，b<q，所以p2大
//    printf("%d\n", ret);
//
//    return 0;
//}
//// 不推荐 ❌
//if (strcmp(p1, p2) == 1) {
//    printf("p1 > p2");
//}
//else if (strcmp(p1, p2 == 0)) {
//    printf("p1 == p2");
//}
//else if (strcmp(p1, p2) == -1) {
//    printf("p1 < p2");
//}
//
//// 推荐 ✅
//if (strcmp(p1, p2) > 0) {
//    printf("p1 > p2");
//}
//else if (strcmp(p1, p2 == 0)) {
//    printf("p1 == p2");
//}
//else if (strcmp(p1, p2) < -1) {
//    printf("p1 < p2");
//}
//
//#include <stdio.h>
//#include <string.h>

//int main()
//{
//    char arr1[5] = "abc";
//    char arr2[] = "hello world";
//    strncpy(arr1, arr2, 4); // 从arr2中拷贝4个到arr1
//    printf("%s\n", arr1);
//
//    return 0;
//}

//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//    char arr1[30] = "hello";
//    char arr2[] = "world";
//    strncat(arr1, arr2, 3); // 从arr2中取3个追加到arr1中
//    printf("%s\n", arr1);
//
//    return 0;
//}

//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	const char* p1 = "abczdef";
//	const char* p2 = "abcqwer";
//	// int ret = strcmp(p1, p2);
//	int ret = strncmp(p1, p2, 1);
//	int ret2 = strncmp(p1, p2, 4);
//	printf("%d %d\n", ret, ret1);
//
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	//192.168.0.1
//	//192 168 0 1 - strtok
//
//	char ip[] = "192.168.0.1";
//	// const char* sep = ".";
//	// char* ret = strtok(ip, sep);
//	char* ret = strtok(ip, ".");
//	printf("%s\n", ret);
//
//	ret = strtok(NULL, ".");
//	printf("%s\n", ret);
//
//	ret = strtok(NULL, ".");
//	printf("%s\n", ret);
//
//	ret = strtok(NULL, ".");
//	printf("%s\n", ret);
//
//	return 0;
//}

//
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	//1300300100@qq.com
//	//1300300100 qq com
//	char arr[] = "1300300100@qq.com";
//	printf("原字符串: %s\n", arr);
//
//	const char* sep = "@."; // 创建sep
//	char arr1[30];
//	char* ret = NULL;
//	strcpy(arr1, arr); // 将数据拷贝一份，保留arr数组的内容
//
//	// 分行打印切割内容
//	for (ret = strtok(arr, sep); ret != NULL; ret = strtok(NULL, sep)) {
//		printf("%s\n", ret);
//	}
//
//	printf("保留的原内容：%s\n", arr1); // 保存的arr数组的内容
//	printf("分割后原字符串被破坏: %s\n", arr); // 分割后原字符串保留第一个分割符前的字符
//
//	return 0;
//}

//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	int arr1[] = { 1, 2, 3, 4, 5 };
//	int arr2[5] = { 0 };
//	memcpy(arr2, arr1, sizeof(arr1));
//
//	// 打印 arr2 的内容
//	int i = 0;
//	for (i = 0; i < 5; i++) {
//		printf("%d ", arr2[i]);
//	}
//
//	return 0;
//}

//struct
//{
//    int a;
//    char b;
//    float c;
//    double d;
//} s;
//
//struct
//{
//    int a;
//    char b;
//    float c;
//    double d;
//} *ps;